<?php

namespace openapi\models\account\mobile;

use peng\helpers\StringHelper;

/**
 * 模型-手机找回密码
 *
 * @author peng.huang
 */
class FindPwdModel extends \openapi\models\BaseInput {

    /**
     * 手机号
     * 
     * @var string 
     */
    public $loginname;

    /**
     * 短信验证码
     * 
     * @var string 
     */
    public $smscode;

    /**
     * 密码
     *
     * @var string
     */
    public $password;

    /**
     * 规则
     * 
     * @return array
     */
    public function rules() {
        return array(
            array(array('loginname', 'smscode', 'password'), 'required'),
            array('loginname', 'number'),
            array('loginname', 'string', 'length' => 11),
            array('smscode', 'string', 'length' => 6),
            array('password', 'string', 'min' => 6, 'max' => 12),
        );
    }

    /**
     * 属性名称
     * 
     * @return array
     */
    public function attrLabels() {
        return array(
            'loginname' => '手机号',
            'smscode' => '短信验证码',
            'password' => '密码',
        );
    }

    /**
     * 验证数据
     * 
     * @param bool $clearErrors [是否清除错误]
     * @return boolean
     */
    public function validate($clearErrors = true) {
        if (!parent::validate($clearErrors)) {
            return FALSE;
        } elseif (!StringHelper::checkMobileValid($this->loginname)) {
            return $this->appendError('loginname', '手机号不正确。');
        } elseif (!$this->checkTokenValid()) {
            return FALSE; // 验证令牌
        } elseif (!$this->checkSmsCodeValid(2)) {
            return FALSE; // 验证图形码
        }

        return TRUE;
    }

    /**
     * 提交
     * 
     * @param mixed $lParam [额外参数]
     * @return boolean
     */
    public function commit(&$lParam) {
        if (!$this->validate()) {
            return FALSE;
        }

        $this->utype = 0; // 手机号
        $accBiz = new \common\biz\AccountBiz();
        $isSucceed = $accBiz->modifyPwdWithNoOldpwd($this);
        if ($isSucceed) {
            $this->processExtra();
        }

        return $isSucceed;
    }

}
